DynamoDBグローバルテーブルを作成して異なるリージョン間での同期を確認してみた
こんにちは、yagiです。
本日はDynamoDBグローバルテーブルを作成してみたので記載します。
本内容は以下のAWS公式チュートリアルからの実施です。
Amazon DynamoDB グローバルテーブル とは?
Amazon DynamoDB グローバルテーブルは、マルチリージョンにマルチアクティブデータベースをデプロイするための完全マネージド型のソリューションです。独自のレプリケーションソリューションを構築および管理する必要はありません。グローバルテーブルを使用すると、そのテーブルの利用を許可する AWS リージョンを指定できます。DynamoDB はこれらのリージョンに同一のテーブルを作成し、進行中のデータ変更をすべてのリージョンに伝達するために必要なすべてのタスクを実行します。
DynamoDB グローバルテーブルは、グローバルに分散したユーザーがいる場合など、大規模にスケールされたアプリケーションを使用する場合に最適です。このような環境では、ユーザーは、非常に高速なアプリケーションパフォーマンスを期待します。グローバルテーブルでは、マルチアクティブレプリケーションを世界中の AWS リージョンに自動的に提供できます。ユーザーがどこにいても、低レイテンシーでデータを提供することができます。
(AWS公式ドキュメントからの引用)
Amazon DynamoDB グローバルテーブルを作成する
ここでは、us-east-2 (米国東部オハイオ) リージョンにDynamoDBを作成し、レプリカテーブルを持つグローバルテーブルを、us-west-2 (米国西部オレゴン) および eu-central-1 (ヨーロッパ:フランクフルト) に作成します。
まずは、us-east-2 (米国東部オハイオ) リージョンに移動してDynamoDBのAWSコンソールから、「テーブルを作成」を押下します。
テーブルの作成画面で、テーブル名、プライマリキーを入力します。ソートキーの追加を選択し、入力します。いずれも「文字列」を指定し、「作成」を押下してテーブルを作成します。
グローバルテーブルを作成するには、DynamoDB Streams を有効にする必要があるので、「グローバルテーブル」タブへ移動し、「ストリームの有効化」を押下します。
「表示タイプ」は、デフォルトのまま「新旧イメージ - 項目の新しいイメージと古いイメージの両方。」として「有効化」を押下します。
次に、「リージョンの追加」を押下します。
「グローバルテーブルへのレプリカの追加」小画面が表示されるので、「リージョン」に、us-west (オレゴン)を選択します。 選択すると、AWSコンソール側で、選択したリージョンに同一名のテーブルが存在しないことを確認してくれます。 画面に緑枠で、「リージョンは準備ができています。[Create replica] をクリックして次に進んでください。」表示がされたら、「レプリカの作成」を押下します。
レプリカの作成が開始されたことを確認して「閉じる」を押下して小画面を閉じます。作成が完了するまで待って、完了してから作業再開します。
グローバルテーブルのリージョンに、「US East (Ohio)」、「US West (Oregon)」が追加されていることを確認します。「リージョンの追加」を押下して、同様の操作で、eu-central-1 (ヨーロッパ:フランクフルト) を追加していきます。
リージョンに「EU (Frankfurt)」が追加されたことを確認します。
これで、作成が完了です。
動作確認
us-east-2 (米国東部オハイオ) リージョンのDynamoDBのAWSコンソール上で、テーブルの「項目」タブを選択します。 「項目の作成」を押下して、今回は手動で追加していきます。
「Artist」に「item_1」、「SongTitle」に「Song Value 1」と入力します。「保存」を押下して、項目に値を手動で書き込みます。
次に、グローバルテーブルのタブから、「EU(Frankfurt)」を選択して、eu-central-1 (ヨーロッパ:フランクフルト) のDynamoDBテーブルへ移動します。
eu-central-1 (ヨーロッパ:フランクフルト) のDynamoDBテーブルに、us-east-2 (米国東部オハイオ) リージョンのDynamoDBのAWSコンソール上で追加した項目(「Artist」に「item_1」、「SongTitle」に「Song Value 1」)が反映されていることが確認できます。
次に、eu-central-1 (ヨーロッパ:フランクフルト) のDynamoDBテーブルのAWSコンソール上から項目へ値を追加します。(「Artist」に「item_2」、「SongTitle」に「Song Value 2」)
次に、グローバルテーブルのタブから、「US West (Oregon)」のリージョンを選択して、us-west-2 (米国西部オレゴン) リージョンのDynamoDBへ移動します。
us-east-2 (米国東部オハイオ) リージョン及び、eu-central-1 (ヨーロッパ:フランクフルト) リージョンにてDynamoDBテーブルに追加した値(「Artist」に「item_1」と「item_2」、「SongTitle」に「Song Value 1」、「Song Value 2」) が反映されていることが確認できます。
結論
Amazon DynamoDB グローバルテーブルを利用して、異なるリージョン間での動作確認を行いました。 操作が簡単で国を跨いでいるとは思えないほどでした。かつ国を跨いでいると思えないほど低レイテンシーとのことで、大変有効なソリューションの一つと認識しました。